package com.hopu.mapper;

import com.hopu.dto.MyEmpDto;
import com.hopu.entity.MyEmp;
import org.apache.ibatis.annotations.Insert;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * @Package: com.hopu.mapper
 * @ClassName: MyDeptMapper
 * @Author: xiaoBao
 * @CreateTime: 2020/10/26 18:32
 * @Description: 【员工信息持久层】
 */
public interface MyEmpMapper {
	/**
	 * findAllEmpPageData 【内连接查询员工、部门、角色表—所有员工信息】
	 * @param eflag 员工是否离职信息（0为在职 1为离职）
	 * @return	将查询到的员工信息集合返回给服务层进行分页。
	 */
	@Select("SELECT eid,pname,jname,erealname,ename,etel,eaddress FROM myemp,myjs,mydept WHERE myemp.`pid` = mydept.`pid` AND myemp.`jid` = myjs.`jid` AND myemp.`eflag` = #{eflag}")
	List<MyEmpDto> findAllEmpPageData(int eflag);


	/**
	 * findEmpAcccount 【查询员工账号是否已存在】
	 * @param myEmp 员工账号；
	 * @return 将查询的结果返回给服务层进行判断。
	 */
	@Select("SELECT * FROM myemp WHERE ename = #{ename}")
	MyEmp findEmpAcccount(MyEmp myEmp);


	/**
	 * addEmp 【添加一条员工信息】
	 * @param myEmp 员工角色、部门Id和姓名、账号、电话、地址等添加员工相关信息；
	 * @return 将执行添加的影响行数返回给前台。
	 */
	@Insert("INSERT INTO myemp(pid,jid,ename,epsw,erealname,etel,eaddress,eflag,eremark)VALUES(#{pid},#{jid},#{ename},#{epsw},#{erealname},#{etel},#{eaddress},0,#{eremark})")
	Integer addEmp(MyEmp myEmp);


	/**
	 * findEmpById 【根据Id查询一条员工信息】
	 * @param myEmp 员工Id；
	 * @return 将查询到的员工信息返回给服务层进行逻辑判断。
	 */
	@Select("SELECT * FROM myemp WHERE eid = #{eid}")
	MyEmp findEmpById(MyEmp myEmp);


	/**
	 * uppEmpById 【根据Id修改一条员工信息】
	 * @param myEmp 员工、部门、角色Id和员工账号、密码、电话等员工信息；
	 * @return 将执行修改操作的影响行数返回给服务层进行逻辑判断。
	 */
	@Update("UPDATE myemp SET pid = #{pid},jid = #{jid},ename = #{ename},epsw = #{epsw},erealname = #{erealname},etel = #{etel},eaddress = #{eaddress},eremark = #{eremark} WHERE eid = #{eid}")
	Integer uppEmpById(MyEmp myEmp);


	/**
	 * delEmpById 【根据Id删除（撤销：软删除）一条员工信息】
	 * @param myEmp 员工Id；
	 * @return 将执行删除操作的影响行数返回给服务层进行逻辑判断。
	 */
	@Update("UPDATE myemp SET eflag = 1 WHERE eid = #{eid}")
	Integer delEmpById(MyEmp myEmp);


	/**
	 * restoreEmp 【根据Id恢复一条已删除的员工信息（将flag的值设为0）】
	 * @param myEmp 员工Id；
	 * @return 将执行恢复操作的影响行数返回给服务层进行逻辑判断。
	 */
	@Update("UPDATE myemp SET eflag = 0 WHERE eid = #{eid}")
	Integer restoreEmp(MyEmp myEmp);
}
